#ifndef __PID_H_
#define __PID_H_
/*PID调节器*/
#include "myconfig.h"
typedef struct {
  int setValue;  // 设定目标
  float kp;      // 比例常数
  float ki;      // 积分常数
  float kd;      // 微分常数

  int lastError;  // Error[-1]
  int prevError;  // Error[-2]
  int sumError;   // 误差累加

  int limit;  // 限制值

} PIDTypeDef;

int positionPIDCalc_LimitSumError(
    PIDTypeDef *p, int nextValue);
int positionPiD_IntegralSeparate(PIDTypeDef *p, int nextValue,
                                 uint16_t threshold);
// 位置式PID，限制误差累加,新增的
int incrementalPIDcalc(PIDTypeDef *p, int nextValue);  // 增量式PID
void PID_Init(PIDTypeDef *pidRegulator, int setValue, int limit, float kp,
              float ki, float kd);
int positionPIDCalc(PIDTypeDef *p, int nextValue);     // 位置式PID
int positionPIDCalc_rotAngle(PIDTypeDef *p, int err);  // 旋转用的位置式PID
#endif                                                 // !__PID_H_
